package com.cskaoyan.market.service;

import com.cskaoyan.market.db.domain.MarketUser;
import com.cskaoyan.market.db.domain.MarketUserExample;
import com.cskaoyan.market.db.mapper.MarketUserMapper;
import com.cskaoyan.market.util.MybatisUtils;
import com.github.pagehelper.PageHelper;
import org.apache.commons.lang3.StringUtils;
import org.apache.ibatis.session.SqlSession;

import java.util.List;

/**
 * @ClassName UserServiceImpl
 * @Description: TODO
 * @Author 远志 zhangsong@cskaoyan.onaliyun.com
 * @Date 2024/3/14 15:08
 * @Version V1.0
 **/
public class UserServiceImpl implements UserService {
    @Override
    public List<MarketUser> list(Integer page, Integer limit, String username, String mobile, String sort, String order) {
        SqlSession session = MybatisUtils.getSession();
        MarketUserMapper marketUserMapper = session.getMapper(MarketUserMapper.class);
        MarketUserExample marketUserExample = new MarketUserExample();
        MarketUserExample.Criteria criteria = marketUserExample.createCriteria();
        // add_time desc
        marketUserExample.setOrderByClause(sort + " " + order);
        //构造where条件
        if(!StringUtils.isEmpty(username)){
            criteria.andUsernameEqualTo(username);
        }
        if(!StringUtils.isEmpty(mobile)){
            criteria.andMobileLike("%" + mobile + "%");
        }
        //分页直接使用分页插件
        //两个参数：第一个参数当前页；第二个参数是每页的数量
        //写这行代码表示分页，不写这行代码表示不分页
        PageHelper.startPage(page, limit);
        //如果你使用的是分页插件，那么分页插件帮助我们封装返回的结果是page类型，是ArrayList的子类
        //可以完全向上转型转成List来接收
        //为什么要封装成page类型，而不是使用ArrayList呢？因为page类型中包含总页数、总条目数、当前页等详细信息
        //无需开发人员再次进行其他的查询
        List<MarketUser> marketUsers = marketUserMapper.selectByExample(marketUserExample);
        session.close();
        return marketUsers;
    }
}
